home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-16 | 31.2 KB | 1,223 lines |
- #
- # Samoylov Tatiana and Gontmakher Alex
- #
-
- #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- #$$ jaw_seg
-
- jaw_arc = cbezier(list(
- ctlpt(E3, 0, 0.15, 0),
- ctlpt(E3, -0.1, 0.15, 0),
- ctlpt(E3, 0.2, 0.2, 0),
- ctlpt(E3, 0.27, 0.15, 0),
- ctlpt(E3, 0.4, 0.11, 0),
- ctlpt(E3, 0.5, -0.05, 0),
- ctlpt(E3, 0.48, -0.1, 0)));
-
- w1 = 5;
- jaw_scale = cbspline(3,
- list(ctlpt(e3, 0, 0, 0),
- ctlpt(e3, 0, 0.28, 0),
- ctlpt(e3, 0.09, 0.2, 0),
- ctlpt(p3, w1, 0.12*w1, 0.2*w1, 0*w1),
- ctlpt(p3, w1, 0.5*w1, 0.2*w1, 0*w1),
- ctlpt(p3, w1, 0.9*w1, 0.17*w1,0*w1),
- ctlpt(e3, 1, 0.01, 0),
- ctlpt(e3, 1, 0.0, 0)),
- list(KV_OPEN));
-
- jaw_cut = circle(vector(0,0,0),0.4);
-
- jaw_seg = swpsclsrf( jaw_cut, jaw_arc, jaw_scale, off, 1 )
- * trans(vector(0,-0.18,0));
- attrib(jaw_seg, "rgb", "255,255,255");
- attrib(jaw_seg, "reflect", 1.0);
-
- jaw_seg_m = swpsclsrf( jaw_cut, jaw_arc * scale(vector(-1,1,1)),
- jaw_scale, off, 1 )
- * trans(vector(0,-0.18,0));
- attrib(jaw_seg_m, "rgb", "255,255,255");
- free(jaw_scale);
- free(jaw_arc);
- free(jaw_cut);
-
- #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- #$$$ segment 1 of the leg
-
- leg_seg1_arc = cbezier(list(
- ctlpt(E3,0,0,0),
- ctlpt(E3,-0.1,0,0),
- ctlpt(E3,0.5,0.2,0),
- ctlpt(E3,1.1,-0.05,0),
- ctlpt(E3,1,0,0)));
-
- w1 = 5;
- leg_seg1_scale = cbspline(3,
- list(ctlpt(e3, 0,0,0),
- ctlpt(e3, 0,0.08,0),
- ctlpt(e3, 0.09,0.1,0),
- ctlpt(p3, w1,0.12*w1,0.2*w1,0*w1),
- ctlpt(p3, w1,0.5*w1,0.3*w1,0*w1),
- ctlpt(p3, w1,0.87*w1,0.09*w1,0*w1),
- ctlpt(e3, 0.9,0.12,0),
- ctlpt(e3, 1,0.25,0),
- ctlpt(e3, 1,0.01,0)),
- list(KV_OPEN));
-
- leg_seg1_cut = circle(vector(0,0,0),0.5);
- leg_seg1 = swpsclsrf( leg_seg1_cut, leg_seg1_arc, leg_seg1_scale, off, 1 );
- attrib(leg_seg1, "rgb", "120,120,120");
-
- leg_seg1_m = swpsclsrf( leg_seg1_cut, leg_seg1_arc * scale(vector(-1,1,1)),
- leg_seg1_scale, off, 1 );
- attrib(leg_seg1_m, "rgb", "120,120,120");
-
- free(leg_seg1_scale);
- free(leg_seg1_arc);
- free(leg_seg1_cut);
-
- #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- #$$ segment 2 of the leg
-
- leg_seg2_arc = cbezier(list(
- ctlpt(E3, 0, 0, 0),
- ctlpt(E3, -0.1, 0, 0),
- ctlpt(E3, 0.5, 0.1, 0),
- ctlpt(E3, 1.1, -0.05, 0),
- ctlpt(E3, 1, 0, 0)));
-
- w1 = 5;
- leg_seg2_scale = cbspline(3,
- list(ctlpt(e3, 0, 0, 0),
- ctlpt(e3, 0, 0.08, 0),
- ctlpt(e3, 0.09, 0.1, 0),
- ctlpt(p3, w1, 0.12*w1, 0.2*w1, 0*w1),
- ctlpt(p3, w1, 0.5*w1, 0.3*w1, 0*w1),
- ctlpt(p3, w1, 0.65*w1, 0.17*w1,0*w1),
- ctlpt(e3, 0.9, 0.12, 0),
- ctlpt(e3, 1, 0.03, 0),
- ctlpt(e3, 1, 0.01, 0)),
- list(KV_OPEN));
- leg_seg2_cut = circle(vector(0,0,0),0.5);
-
- leg_seg2 = swpsclsrf( leg_seg2_cut, leg_seg2_arc, leg_seg2_scale, off, 1 );
- attrib(leg_seg2, "rgb", "100,100,100");
-
- leg_seg2_m = swpsclsrf( leg_seg2_cut, leg_seg2_arc * scale(vector(-1,1,1)),
- leg_seg2_scale, off, 1 );
- attrib(leg_seg2_m, "rgb", "100,100,100");
- free(leg_seg2_scale);
- free(leg_seg2_arc);
- free(leg_seg2_cut);
-
- #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- #$$ segment 3 of the leg
-
- leg_seg3_arc = cbezier(list(
- ctlpt(E3, 0, 0, 0),
- ctlpt(E3, -0.1, 0, 0),
- ctlpt(E3, 0.2, 0.15, 0),
- ctlpt(E3, 0.22, 0.15, 0),
- ctlpt(E3, 0.4, 0.03, 0),
- ctlpt(E3, 1.1, -0.05, 0),
- ctlpt(E3, 1, 0, 0)));
-
- w1 = 5;
- leg_seg3_scale = cbspline(3,
- list(ctlpt(e3, 0, 0, 0),
- ctlpt(e3, 0, 0.28, 0),
- ctlpt(e3, 0.09, 0.2, 0),
- ctlpt(p3, w1, 0.12*w1, 0.2*w1, 0*w1),
- ctlpt(p3, w1, 0.5*w1, 0.2*w1, 0*w1),
- ctlpt(p3, w1, 0.9*w1, 0.17*w1,0*w1),
- ctlpt(e3, 0.9, 0.26, 0),
- ctlpt(e3, 1, 0.23, 0),
- ctlpt(e3, 1, 0.01, 0)),
- list(KV_OPEN));
-
- leg_seg3_cut = circle(vector(0,0,0),0.3);
-
- leg_seg3 = swpsclsrf( leg_seg3_cut, leg_seg3_arc, leg_seg3_scale, off, 1 );
- attrib(leg_seg3, "rgb", "50,50,50");
-
- leg_seg3_m = swpsclsrf( leg_seg3_cut, leg_seg3_arc * scale(vector(-1,1,1)),
- leg_seg3_scale, off, 1 );
- attrib(leg_seg3_m, "rgb", "50,50,50");
-
- free(leg_seg3_scale);
- free(leg_seg3_arc);
- free(leg_seg3_cut);
- ######################################
- ### segment 4
- leg_seg4_arc = cbezier(list(
- ctlpt(E3,0,0,0),
- ctlpt(E3,-0.1,0,0),
- ctlpt(E3,0.5,-0.05,0),
- ctlpt(E3,1.1,0.01,0),
- ctlpt(E3,1,0,0)));
-
- w1 = 5;
- leg_seg4_scale = cbspline(3,
- list(ctlpt(e3, 0,0,0),
- ctlpt(e3, 0,0.25,0),
- ctlpt(e3, 0.09,0.13,0),
- ctlpt(p3, w1,0.12*w1,0.10*w1,0*w1),
- ctlpt(p3, w1,0.87*w1,0.09*w1,0*w1),
- ctlpt(e3, 0.9,0.12,0),
- ctlpt(e3, 1,0.25,0),
- ctlpt(e3, 1,0.01,0)),
- list(KV_OPEN));
-
- leg_seg4_cut = circle(vector(0,0,0),0.40);
-
- leg_seg4 = swpsclsrf( leg_seg4_cut, leg_seg4_arc, leg_seg4_scale, off, 1 );
- attrib(leg_seg4, "rgb", "120,120,120");
-
- leg_seg4_m = swpsclsrf( leg_seg4_cut, leg_seg4_arc * scale(vector(-1,1,1)),
- leg_seg4_scale, off, 1 );
- attrib(leg_seg4_m, "rgb", "120,120,120");
-
- free(leg_seg4_scale);
- free(leg_seg4_cut);
- free(leg_seg4_arc);
- ######################################
- ### segment 5
- leg_seg5_arc = cbezier(list(
- ctlpt(E3,0,0,0),
- ctlpt(E3,-0.1,0,0),
- ctlpt(E3,0.5,0.08,0),
- ctlpt(E3,1.1,-0.02,0),
- ctlpt(E3,1,0,0)));
-
- w1 = 5;
- leg_seg5_scale = cbspline(3,
- list(ctlpt(e3, 0,0,0),
- ctlpt(e3, 0,0.25,0),
- ctlpt(e3, 0.09,0.13,0),
- ctlpt(p3, w1,0.12*w1,0.25*w1,0*w1),
- ctlpt(p3, w1,0.87*w1,0.19*w1,0*w1),
- ctlpt(e3, 0.9,0.12,0),
- ctlpt(e3, 1,0.25,0),
- ctlpt(e3, 1,0.01,0)),
- list(KV_OPEN));
-
- leg_seg5_cut = circle(vector(0,0,0),0.50);
-
- leg_seg5 = swpsclsrf( leg_seg5_cut, leg_seg5_arc, leg_seg5_scale, off, 1 );
- attrib(leg_seg5, "rgb", "192,192,192");
-
- leg_seg5_m = swpsclsrf( leg_seg5_cut, leg_seg5_arc * scale(vector(-1,1,1)),
- leg_seg5_scale, off, 1 );
- attrib(leg_seg5_m, "rgb", "192,192,192");
-
- free(leg_seg5_scale);
- free(leg_seg5_cut);
- free(leg_seg5_arc);
-
- ######################################
- ### leg 0
-
- leg0_arc = cbspline(3,
- list(
- ctlpt(E3,1,0,0),
- ctlpt(E3,1.1,-0.02,0),
- ctlpt(E3,0.6,0.5,0),
- ctlpt(E3,0.35,0.5,0),
- ctlpt(E3,-0.1,0,0),
- ctlpt(E3,0,0,0)
- ),
- list(KV_OPEN));
-
- w1 = 5;
- leg0_scale = cbspline(3,
- list(ctlpt(e3, 0,0,0),
- ctlpt(e3, 0,0.43,0),
- ctlpt(e3, 0.3,0.35,0),
- ctlpt(p3, w1,0.12*w1,0.25*w1,0*w1),
- ctlpt(p3, w1,0.87*w1,0.19*w1,0*w1),
- ctlpt(e3, 0.9,0.12,0),
- ctlpt(e3, 1,0.25,0),
- ctlpt(e3, 1,0.01,0)),
- list(KV_OPEN));
-
- leg0_cut = circle(vector(0,0,0),0.50);
-
- leg0_seg = swpsclsrf( leg0_cut, leg0_arc, leg0_scale, off, 1 );
-
- leg0_seg_m = swpsclsrf( leg0_cut, leg0_arc * scale(vector(-1,1,1)),
- leg0_scale, off, 1 );
-
- leg0 = leg0_seg * scale(vector(0.7,0.7,0.7))
- * rotz(-120);
- leg0_m = leg0_seg_m * scale(vector(0.7,0.7,0.7))
- * rotz(120);
-
- attrib(leg0, "rgb", "100,100,100");
- attrib(leg0_m, "rgb", "100,100,100");
-
- free(leg0_seg_m);
- free(leg0_seg);
- free(leg0_scale);
- free(leg0_arc);
- free(leg0_cut);
- ######################################
- ### leg 1
-
- leg1_seg1_trans = rotz(-30) * roty(25);
- leg1_seg1_dv = vector(1,-0.02,0) * leg1_seg1_trans;
- leg1_seg2_trans = scale(vector(1.5,1,1)) * rotz(-90) * rotx(-10)
- * trans(leg1_seg1_dv);
- leg1_seg2_dv = vector(1,0,0) * leg1_seg2_trans;
- leg1_seg3_trans = rotz(-110) * roty(90) * rotx(-10) * rotz(-20) * trans(vector(-0.02,-0.05,0))
- * trans(leg1_seg2_dv);
-
- leg1_seg1_trans_m = rotz(30) *
- roty(-25);
- leg1_seg1_dv_m = vector(-1,-0.02,0) *
- leg1_seg1_trans_m;
- leg1_seg2_trans_m = scale(vector(1.5,1,1)) *
- rotz(90) * rotx(-10) *
- trans(leg1_seg1_dv_m);
- leg1_seg2_dv_m = vector(-1,0,0) * leg1_seg2_trans_m;
- leg1_seg3_trans_m = rotz(110) * roty(-90) *
- rotx(-10) * rotz(20) * trans(vector(0.02,0.05,0)) *
- trans(leg1_seg2_dv_m);
-
- leg1 = list(leg_seg1 * leg1_seg1_trans,
- leg_seg2 * leg1_seg2_trans,
- leg_seg3 * leg1_seg3_trans,
- trans(vector(1.15,-0.97,0.03)));
-
- leg1_m = list(leg_seg1_m * leg1_seg1_trans_m,
- leg_seg2_m * leg1_seg2_trans_m,
- leg_seg3_m * leg1_seg3_trans_m,
- trans(vector(1.15,0.97,-0.03)));
-
- free(leg1_seg3_trans);
- free(leg1_seg2_trans);
- free(leg1_seg1_trans);
- free(leg1_seg2_dv);
- free(leg1_seg1_dv);
-
- free(leg1_seg3_trans_m);
- free(leg1_seg2_trans_m);
- free(leg1_seg1_trans_m);
- free(leg1_seg2_dv_m);
- free(leg1_seg1_dv_m);
-
- ######################################
- ### leg 2
-
- leg2_seg1_trans = roty(15);
- leg2_seg1_dv = vector(1,0,0) * leg2_seg1_trans;
- leg2_seg2_trans = rotz(-70) * rotx(-10)
- * trans(leg2_seg1_dv);
- leg2_seg2_dv = vector(1,0,0) * leg2_seg2_trans;
- leg2_seg3_trans = rotz(-110) * roty(90) * rotx(-10) * trans(vector(-0.02,0.05,0))
- * trans(leg2_seg2_dv);
-
- leg2_seg1_trans_m = roty(-15);
- leg2_seg1_dv_m = vector(-1,0,0) * leg2_seg1_trans_m;
- leg2_seg2_trans_m = rotz(70) * rotx(-10) *
- trans(leg2_seg1_dv_m);
- leg2_seg2_dv_m = vector(-1,0,0) * leg2_seg2_trans_m;
- leg2_seg3_trans_m = rotz(110) * roty(-90) *
- rotx(-10) * trans(vector(0.02,-0.05,0)) *
- trans(leg2_seg2_dv_m);
-
-
- leg2 = list(leg_seg1 * leg2_seg1_trans,
- leg_seg2 * leg2_seg2_trans,
- leg_seg3 * leg2_seg3_trans,
- trans(vector(1.15,-0.97,0.03)));
-
- leg2_m = list(leg_seg1_m * leg2_seg1_trans_m,
- leg_seg2_m * leg2_seg2_trans_m,
- leg_seg3_m * leg2_seg3_trans_m,
- trans(vector(1.15,0.97,-0.03)));
-
- free(leg2_seg3_trans);
- free(leg2_seg2_trans);
- free(leg2_seg1_trans);
- free(leg2_seg2_dv);
- free(leg2_seg1_dv);
-
- free(leg2_seg3_trans_m);
- free(leg2_seg2_trans_m);
- free(leg2_seg1_trans_m);
- free(leg2_seg2_dv_m);
- free(leg2_seg1_dv_m);
-
- ######################################
- ### leg 3
-
- leg3_seg1_trans = rotz(20) * roty(15);
- leg3_seg1_dv = vector(1,0,0) * leg3_seg1_trans;
- leg3_seg2_trans = rotx(180) * scale(vector(1.4,1,1)) * rotz(15) * roty(-10) * rotx(-10);
- leg3_seg2_dv = vector(1,0,0) * leg3_seg2_trans;
- leg3_seg3_trans = scale(vector(0.8,0.6,1)) * rotx(-90) * rotz(20) * roty(-36) * rotx(-10);
-
- leg3_seg1_trans_m = rotz(-20) * roty(-15);
- leg3_seg1_dv_m = vector(-1,0,0) * leg3_seg1_trans_m;
- leg3_seg2_trans_m = rotx(180) * scale(vector(1.4,1,1)) * rotz(-15) * roty(10) * rotx(-10);
- leg3_seg2_dv_m = vector(-1,0,0) * leg3_seg2_trans_m;
- leg3_seg3_trans_m = scale(vector(0.8,0.6,1)) * rotx(-90) * rotz(-20) * roty(36) * rotx(-10);
-
-
- leg3 = list(leg_seg5 * leg3_seg1_trans,
- leg_seg4 * leg3_seg2_trans * trans(leg3_seg1_dv),
- leg_seg3 * leg3_seg3_trans * trans(leg3_seg1_dv) *
- trans(leg3_seg2_dv));
-
- leg3_m = list(leg_seg5_m * leg3_seg1_trans_m,
- leg_seg4_m * leg3_seg2_trans_m * trans(leg3_seg1_dv_m),
- leg_seg3_m * leg3_seg3_trans_m * trans(leg3_seg1_dv_m) *
- trans(leg3_seg2_dv_m));
-
- free(leg3_seg2_dv);
- free(leg3_seg1_dv);
- free(leg3_seg3_trans);
- free(leg3_seg2_trans);
- free(leg3_seg1_trans);
-
- free(leg3_seg2_dv_m);
- free(leg3_seg1_dv_m);
- free(leg3_seg3_trans_m);
- free(leg3_seg2_trans_m);
- free(leg3_seg1_trans_m);
-
- ######################################
- ### leg 4
-
- leg4_seg1_trans = rotz(50) * roty(15);
- leg4_seg1_dv =
- vector(1,0,0) *
- leg4_seg1_trans;
- leg4_seg2_trans = rotx(180) *
- scale(vector(1.4,1,1)) *
- rotz(56) *
- roty(-10) *
- rotx(-10);
- leg4_seg2_dv =
- vector(1,0,0) *
- leg4_seg2_trans;
- leg4_seg3_trans =
- scale(vector(0.8,0.6,1)) *
- rotx(-90) *
- rotz(56) * roty(-36) * rotx(15);
-
- leg4_seg1_trans_m = rotz(-50) * roty(-15);
- leg4_seg1_dv_m =
- vector(-1,0,0) *
- leg4_seg1_trans_m;
- leg4_seg2_trans_m = rotx(180) *
- scale(vector(1.4,1,1)) *
- rotz(-56) *
- roty(10) *
- rotx(-10);
- leg4_seg2_dv_m =
- vector(-1,0,0) *
- leg4_seg2_trans_m;
- leg4_seg3_trans_m =
- scale(vector(0.8,0.6,1)) *
- rotx(-90) *
- rotz(-56) * roty(36) * rotx(15);
-
-
- leg4 = list(leg_seg5 * leg4_seg1_trans,
- leg_seg4 * leg4_seg2_trans * trans(leg4_seg1_dv),
- leg_seg3 * leg4_seg3_trans * trans(leg4_seg1_dv) *
- trans(leg4_seg2_dv));
-
- leg4_m = list(leg_seg5_m * leg4_seg1_trans_m,
- leg_seg4_m * leg4_seg2_trans_m * trans(leg4_seg1_dv_m),
- leg_seg3_m * leg4_seg3_trans_m * trans(leg4_seg1_dv_m) *
- trans(leg4_seg2_dv_m));
-
- free(leg4_seg2_dv);
- free(leg4_seg1_dv);
- free(leg4_seg3_trans);
- free(leg4_seg2_trans);
- free(leg4_seg1_trans);
-
- free(leg4_seg2_dv_m);
- free(leg4_seg1_dv_m);
- free(leg4_seg3_trans_m);
- free(leg4_seg2_trans_m);
- free(leg4_seg1_trans_m);
-
- ######################################
- ### jaw
-
- jaw_seg1_trans = scale(vector(0.5,1.1,1));
- jaw_seg1_dv = vector(1,0,0) * jaw_seg1_trans;
- jaw_seg2_trans = scale(vector(0.3,0.83,0.78));
- jaw_seg2_dv = vector(1,0,0) * jaw_seg2_trans;
-
- jaw_seg1_trans_m = scale(vector(0.5,1.1,1));
- jaw_seg1_dv_m = vector(-1,0,0) * jaw_seg1_trans_m;
- jaw_seg2_trans_m = scale(vector(0.3,0.83,0.78));
- jaw_seg2_dv_m = vector(-1,0,0) * jaw_seg2_trans_m;
-
-
- jaw = list(leg_seg5 * jaw_seg1_trans,
- jaw_seg * jaw_seg2_trans * trans(jaw_seg1_dv),
- trans(jaw_seg2_dv))
- * rotx(-90) * roty(-90) *
- scale(vector(1.5,1,1)) * roty(-10);
-
- jaw_m = list(leg_seg5_m * jaw_seg1_trans_m,
- jaw_seg_m * jaw_seg2_trans_m * trans(jaw_seg1_dv_m),
- trans(jaw_seg2_dv_m))
- * rotx(-90) * roty(90) *
- scale(vector(1.5,1,1)) * roty(10);
-
-
- free(jaw_seg2_dv);
- free(jaw_seg1_dv);
- free(jaw_seg2_trans);
- free(jaw_seg1_trans);
-
- free(jaw_seg2_dv_m);
- free(jaw_seg1_dv_m);
- free(jaw_seg2_trans_m);
- free(jaw_seg1_trans_m);
- ######################################
- ### the bottom of the head
- head_bottom_mesh = list(
- list(
- ctlpt(e3, 0, 0.5, 1),
- ctlpt(e3, 0, 1.5, 1),
- ctlpt(e3, 0, 2.5, 1),
- ctlpt(e3, 0, 4, 1),
- ctlpt(e3, 0, 6, 1),
- ctlpt(e3, 0, 8, 1),
- ctlpt(e3, 0, 9, 0.7)
- ),list(
- ctlpt(e3, 1.5, 0.5, 1),
- ctlpt(e3, 1.1, 1.5, 1),
- ctlpt(e3, 1.2, 2.5, 1),
- ctlpt(e3, 1.2, 4, 1),
- ctlpt(e3, 1.1, 6, 1),
- ctlpt(e3, 1, 8, 1),
- ctlpt(e3, 0.9, 9, 0.7)
- ),list(
- ctlpt(e3, 1.8, 0, 0.7),
- ctlpt(e3, 2.2, 1, 0.7),
- ctlpt(e3, 2.8, 2, 0.7),
- ctlpt(e3, 2.9, 4.5, 0.7),
- ctlpt(e3, 2.5, 6.5, 0.7),
- ctlpt(e3, 1.9, 8.2, 0.7),
- ctlpt(e3, 1.3, 9, 0.7)
- ),list(
- ctlpt(e3, 1.8, 0, 0.1),
- ctlpt(e3, 2.6, 0.9, 0.1),
- ctlpt(e3, 3.3, 2, 0.1),
- ctlpt(e3, 3.4, 5, 0.1),
- ctlpt(e3, 2.1, 7, 0.1),
- ctlpt(e3, 1.6, 8.5, 0.1),
- ctlpt(e3, 1.4, 9, 0.1)
- ),list(
- ctlpt(e3, 0.0, 0, 0),
- ctlpt(e3, 2.8, 0.8, 0),
- ctlpt(e3, 3.5, 2, 0),
- ctlpt(e3, 3.5, 5, 0),
- ctlpt(e3, 2.2, 7.1, 0),
- ctlpt(e3, 1.8, 8.5, 0),
- ctlpt(e3, 1.5, 9, 0)
- )
- );
-
- head_bottom_mesh_m = list(
- list(
- ctlpt(e3, -0.0, 0, 0),
- ctlpt(e3, -2.8, 0.8, 0),
- ctlpt(e3, -3.5, 2, 0),
- ctlpt(e3, -3.5, 5, 0),
- ctlpt(e3, -2.2, 7.1, 0),
- ctlpt(e3, -1.8, 8.5, 0),
- ctlpt(e3, -1.5, 9, 0)
- ),list(
- ctlpt(e3, -1.8, 0, 0.1),
- ctlpt(e3, -2.6, 0.9, 0.1),
- ctlpt(e3, -3.3, 2, 0.1),
- ctlpt(e3, -3.4, 5, 0.1),
- ctlpt(e3, -2.1, 7, 0.1),
- ctlpt(e3, -1.6, 8.5, 0.1),
- ctlpt(e3, -1.4, 9, 0.1)
- ),list(
- ctlpt(e3, -1.8, 0, 0.7),
- ctlpt(e3, -2.2, 1, 0.7),
- ctlpt(e3, -2.8, 2, 0.7),
- ctlpt(e3, -2.9, 4.5, 0.7),
- ctlpt(e3, -2.5, 6.5, 0.7),
- ctlpt(e3, -1.9, 8.2, 0.7),
- ctlpt(e3, -1.3, 9, 0.7)
- ),list(
- ctlpt(e3, -1.5, 0.5, 1),
- ctlpt(e3, -1.1, 1.5, 1),
- ctlpt(e3, -1.2, 2.5, 1),
- ctlpt(e3, -1.2, 4, 1),
- ctlpt(e3, -1.1, 6, 1),
- ctlpt(e3, -1, 8, 1),
- ctlpt(e3, -0.9, 9, 0.7)
- ),list(
- ctlpt(e3, -0, 0.5, 1),
- ctlpt(e3, -0, 1.5, 1),
- ctlpt(e3, -0, 2.5, 1),
- ctlpt(e3, -0, 4, 1),
- ctlpt(e3, -0, 6, 1),
- ctlpt(e3, -0, 8, 1),
- ctlpt(e3, -0, 9, 0.7)
- )
- );
-
- head_bottom_half = sbspline(3, 3, head_bottom_mesh,
- list(list(KV_OPEN),
- list(KV_OPEN)));
-
- head_bottom_half_m = sbspline(3, 3, head_bottom_mesh_m,
- list(list(KV_OPEN),
- list(KV_OPEN)));
-
- head_scale_factor = scale(vector(0.2,0.2,0.2));
- head_bottom = list(
- head_bottom_half * scale(vector(-1,1,1)),
- head_bottom_half_m * scale(vector(-1,1,1)) ) *
- head_scale_factor;
-
- free(head_bottom_half);
- free(head_bottom_half_m);
- free(head_bottom_mesh);
-
- ######################################
- ### the top of the head
- head_top_mesh = list(
- list(
- ctlpt(e3, 0, -1, .12),
- ctlpt(e3, 0, -0.5, 3),
- ctlpt(e3, 0, 2.0, 3.2),
- ctlpt(e3, 0, 4, 3),
- ctlpt(e3, 0, 6, 2.8),
- ctlpt(e3, 0, 8, 2.0),
- ctlpt(e3, 0, 9, 1.5)
- ),list(
- ctlpt(e3, 0.18, -1, .12),
- ctlpt(e3, 0.18, -0.5, 3),
- ctlpt(e3, 0.18, 2.0, 3.2),
- ctlpt(e3, 0.18, 4, 3),
- ctlpt(e3, 0.18, 6, 2.8),
- ctlpt(e3, 0.18, 8, 2.0),
- ctlpt(e3, 0.18, 9, 1.5)
- ),list(
- ctlpt(e3, 0.0, -1, 0.118),
- ctlpt(e3, 1.5, -0.5, 2.6),
- ctlpt(e3, 2.4, 2.0, 3.1),
- ctlpt(e3, 2.6, 4, 2.9),
- ctlpt(e3, 1.5, 6, 2.2),
- ctlpt(e3, 1.0, 8, 1.9),
- ctlpt(e3, 0.9, 9, 1.4)
- ),list(
- ctlpt(e3, 0.0, -1, 0.35),
- ctlpt(e3, 2.2, -0.6, 1.2),
- ctlpt(e3, 2.8, 2.5, 2.7),
- ctlpt(e3, 2.9, 4, 2.7),
- ctlpt(e3, 1.8, 6.5, 2.3),
- ctlpt(e3, 1.2, 8.2, 2.0),
- ctlpt(e3, 1.3, 9, 1.35)
- ),list(
- ctlpt(e3, 0.1, -1, 0.3),
- ctlpt(e3, 2.6, -0.8, 1.1),
- ctlpt(e3, 3.3, 2, 1.0),
- ctlpt(e3, 3.4, 5, 1.0),
- ctlpt(e3, 2.0, 7, 1.0),
- ctlpt(e3, 1.6, 8.5, 1.0),
- ctlpt(e3, 1.4, 9, 1.0)
- ),list(
- ctlpt(e3, 0.0, -1, 0.2),
- ctlpt(e3, 2.7, -0.8, 0.5),
- ctlpt(e3, 3.4, 2, 0.5),
- ctlpt(e3, 3.3, 5, 0.5),
- ctlpt(e3, 2.1, 7.1, 0.5),
- ctlpt(e3, 1.8, 8.5, 0.5),
- ctlpt(e3, 1.5, 9, 0.5)
- ),list(
- ctlpt(e3, 0.0, -1, 0.1),
- ctlpt(e3, 3.0, -0.8, 0.2),
- ctlpt(e3, 3.7, 2, 0.2),
- ctlpt(e3, 3.6, 5, 0.2),
- ctlpt(e3, 2.4, 7.1, 0.2),
- ctlpt(e3, 1.9, 8.5, 0.2),
- ctlpt(e3, 1.6, 9, 0.2)
- ),list(
- ctlpt(e3, 0.0, 0, 0),
- ctlpt(e3, 2.8, 0.8, 0),
- ctlpt(e3, 3.5, 2, 0),
- ctlpt(e3, 3.5, 5, 0),
- ctlpt(e3, 2.2, 7.1, 0),
- ctlpt(e3, 1.8, 8.5, 0),
- ctlpt(e3, 1.5, 9, 0)
- )
- );
-
- head_top_mesh_m = list(
- list(
- ctlpt(e3, -0.0, 0, 0),
- ctlpt(e3, -2.8, 0.8, 0),
- ctlpt(e3, -3.5, 2, 0),
- ctlpt(e3, -3.5, 5, 0),
- ctlpt(e3, -2.2, 7.1, 0),
- ctlpt(e3, -1.8, 8.5, 0),
- ctlpt(e3, -1.5, 9, 0)
- ),list(
- ctlpt(e3, -0.0, -1, 0.1),
- ctlpt(e3, -3.0, -0.8, 0.2),
- ctlpt(e3, -3.7, 2, 0.2),
- ctlpt(e3, -3.6, 5, 0.2),
- ctlpt(e3, -2.4, 7.1, 0.2),
- ctlpt(e3, -1.9, 8.5, 0.2),
- ctlpt(e3, -1.6, 9, 0.2)
- ),list(
- ctlpt(e3, -0.0, -1, 0.2),
- ctlpt(e3, -2.7, -0.8, 0.5),
- ctlpt(e3, -3.4, 2, 0.5),
- ctlpt(e3, -3.3, 5, 0.5),
- ctlpt(e3, -2.1, 7.1, 0.5),
- ctlpt(e3, -1.8, 8.5, 0.5),
- ctlpt(e3, -1.5, 9, 0.5)
- ),list(
- ctlpt(e3, -0.1, -1, 0.3),
- ctlpt(e3, -2.6, -0.8, 1.1),
- ctlpt(e3, -3.3, 2, 1.0),
- ctlpt(e3, -3.4, 5, 1.0),
- ctlpt(e3, -2.0, 7, 1.0),
- ctlpt(e3, -1.6, 8.5, 1.0),
- ctlpt(e3, -1.4, 9, 1.0)
- ),list(
- ctlpt(e3, -0.0, -1, 0.35),
- ctlpt(e3, -2.2, -0.6, 1.2),
- ctlpt(e3, -2.8, 2.5, 2.7),
- ctlpt(e3, -2.9, 4, 2.7),
- ctlpt(e3, -1.8, 6.5, 2.3),
- ctlpt(e3, -1.2, 8.2, 2.0),
- ctlpt(e3, -1.3, 9, 1.35)
- ),list(
- ctlpt(e3, -0.0, -1, 0.118),
- ctlpt(e3, -1.5, -0.5, 2.6),
- ctlpt(e3, -2.4, 2.0, 3.1),
- ctlpt(e3, -2.6, 4, 2.9),
- ctlpt(e3, -1.5, 6, 2.2),
- ctlpt(e3, -1.0, 8, 1.9),
- ctlpt(e3, -0.9, 9, 1.4)
- ),list(
- ctlpt(e3, -0.18, -1, .12),
- ctlpt(e3, -0.18, -0.5, 3),
- ctlpt(e3, -0.18, 2.0, 3.2),
- ctlpt(e3, -0.18, 4, 3),
- ctlpt(e3, -0.18, 6, 2.8),
- ctlpt(e3, -0.18, 8, 2.0),
- ctlpt(e3, -0.18, 9, 1.5)
- ),list(
- ctlpt(e3, -0, -1, .12),
- ctlpt(e3, -0, -0.5, 3),
- ctlpt(e3, -0, 2.0, 3.2),
- ctlpt(e3, -0, 4, 3),
- ctlpt(e3, -0, 6, 2.8),
- ctlpt(e3, -0, 8, 2.0),
- ctlpt(e3, -0, 9, 1.5)
- )
- );
-
- head_top_half = sbspline(3, 3, head_top_mesh, list(list(KV_OPEN),
- list(KV_OPEN)));
- head_top_half_m = sbspline(3, 3, head_top_mesh_m,
- list(list(KV_OPEN),
- list(KV_OPEN)));
- free(head_top_mesh);
- free(head_top_mesh_m);
-
- head_top = list(
- head_top_half,
- head_top_half_m)
- * head_scale_factor * scale(vector(1,1,-1));
- head = list(head_top, head_bottom) *
- #head = list(head_bottom) *
- trans(vector(0,0,-1) * head_scale_factor);
- attrib(head, "rgb", "123,0,0");
-
- free(head_top_half);
- free(head_top_half_m);
- free(head_top);
- free(head_bottom);
-
- ###########################################################################
- ###########################################################################
- ### the back
-
- ######################################
- ### the bottom of the back
- back_bottom_mesh = list(
- list(
- ctlpt(e3, 0, 9, 0.7),
- ctlpt(e3, 0, 10.3, 1.3),
- ctlpt(e3, 0, 11.6, 1.5),
- ctlpt(e3, 0, 12.7, 1.6),
- ctlpt(e3, 0, 13.7, 1.4),
- ctlpt(e3, 0, 14.7, 1.2),
- ctlpt(e3, 0, 16, 0)
- ),list(
- ctlpt(e3, 0.9, 9, 0.7),
- ctlpt(e3, 0.1, 10.2, 1.3),
- ctlpt(e3, 0.1, 11.6, 1.5),
- ctlpt(e3, 0.1, 12.7, 1.6),
- ctlpt(e3, 0.1, 13.7, 1.4),
- ctlpt(e3, 0.1, 14.7, 1.2),
- ctlpt(e3, 0.0, 16, 0)
- ),list(
- ctlpt(e3, 0.9, 9, 0.7),
- ctlpt(e3, 0.2, 10.2, 1.3),
- ctlpt(e3, 0.2, 11.6, 1.5),
- ctlpt(e3, 0.2, 12.7, 1.6),
- ctlpt(e3, 0.2, 13.7, 1.4),
- ctlpt(e3, 0.2, 14.7, 1.2),
- ctlpt(e3, 0.0, 16, 0)
- ),list(
- ctlpt(e3, 0.9, 9, 0.7),
- ctlpt(e3, 0.3, 10.2, 1.3),
- ctlpt(e3, 0.3, 11.6, 1.5),
- ctlpt(e3, 0.3, 12.7, 1.6),
- ctlpt(e3, 0.3, 13.7, 1.4),
- ctlpt(e3, 0.3, 14.7, 1.2),
- ctlpt(e3, 0.0, 16, 0)
- ),list(
- ctlpt(e3, 1.3, 9, 0.7),
- ctlpt(e3, 0.8, 10.2, 1.2),
- ctlpt(e3, 0.9, 11.4, 1.4),
- ctlpt(e3, 0.9, 12.6, 1.4),
- ctlpt(e3, 0.7, 14, 1.3),
- ctlpt(e3, 0.5, 15, 1.1),
- ctlpt(e3, 0, 16, 0)
- ),list(
- ctlpt(e3, 1.4, 9, 0.1),
- ctlpt(e3, 1.8, 10.2, 0.6),
- ctlpt(e3, 2.2, 11.5, 0.7),
- ctlpt(e3, 2.0, 12.6, 0.75),
- ctlpt(e3, 1.5, 14.3, 0.7),
- ctlpt(e3, 0.8, 15.4, 0.5),
- ctlpt(e3, 0, 16, 0)
- ),list(
- ctlpt(e3, 1.5, 9, 0),
- ctlpt(e3, 2.1, 10.1, 0),
- ctlpt(e3, 2.6, 11.3, 0),
- ctlpt(e3, 2.4, 12.8, 0),
- ctlpt(e3, 1.6, 14.5, 0),
- ctlpt(e3, 0.8, 15.6, 0),
- ctlpt(e3, 0, 16, 0)
- )
- );
-
- back_bottom_mesh_m = list(
- list(
- ctlpt(e3, -1.5, 9, 0),
- ctlpt(e3, -2.1, 10.1, 0),
- ctlpt(e3, -2.6, 11.3, 0),
- ctlpt(e3, -2.4, 12.8, 0),
- ctlpt(e3, -1.6, 14.5, 0),
- ctlpt(e3, -0.8, 15.6, 0),
- ctlpt(e3, -0, 16, 0)
- ),list(
- ctlpt(e3, -1.4, 9, 0.1),
- ctlpt(e3, -1.8, 10.2, 0.6),
- ctlpt(e3, -2.2, 11.5, 0.7),
- ctlpt(e3, -2.0, 12.6, 0.75),
- ctlpt(e3, -1.5, 14.3, 0.7),
- ctlpt(e3, -0.8, 15.4, 0.5),
- ctlpt(e3, -0, 16, 0)
- ),list(
- ctlpt(e3, -1.3, 9, 0.7),
- ctlpt(e3, -0.8, 10.2, 1.2),
- ctlpt(e3, -0.9, 11.4, 1.4),
- ctlpt(e3, -0.9, 12.6, 1.4),
- ctlpt(e3, -0.7, 14, 1.3),
- ctlpt(e3, -0.5, 15, 1.1),
- ctlpt(e3, -0, 16, 0)
- ),list(
- ctlpt(e3, -0.9, 9, 0.7),
- ctlpt(e3, -0.3, 10.2, 1.3),
- ctlpt(e3, -0.3, 11.6, 1.5),
- ctlpt(e3, -0.3, 12.7, 1.6),
- ctlpt(e3, -0.3, 13.7, 1.4),
- ctlpt(e3, -0.3, 14.7, 1.2),
- ctlpt(e3, -0.0, 16, 0)
- ),list(
- ctlpt(e3, -0.9, 9, 0.7),
- ctlpt(e3, -0.2, 10.2, 1.3),
- ctlpt(e3, -0.2, 11.6, 1.5),
- ctlpt(e3, -0.2, 12.7, 1.6),
- ctlpt(e3, -0.2, 13.7, 1.4),
- ctlpt(e3, -0.2, 14.7, 1.2),
- ctlpt(e3, -0.0, 16, 0)
- ),list(
- ctlpt(e3, -0.9, 9, 0.7),
- ctlpt(e3, -0.1, 10.2, 1.3),
- ctlpt(e3, -0.1, 11.6, 1.5),
- ctlpt(e3, -0.1, 12.7, 1.6),
- ctlpt(e3, -0.1, 13.7, 1.4),
- ctlpt(e3, -0.1, 14.7, 1.2),
- ctlpt(e3, -0.0, 16, 0)
- ),list(
- ctlpt(e3, -0, 9, 0.7),
- ctlpt(e3, -0, 10.3, 1.3),
- ctlpt(e3, -0, 11.6, 1.5),
- ctlpt(e3, -0, 12.7, 1.6),
- ctlpt(e3, -0, 13.7, 1.4),
- ctlpt(e3, -0, 14.7, 1.2),
- ctlpt(e3, -0, 16, 0)
- )
- );
-
- back_bottom_half = sbspline(3, 3, back_bottom_mesh,
- list(list(KV_OPEN), list(KV_OPEN)));
- back_bottom_half_m = sbspline(3, 3, back_bottom_mesh_m,
- list(list(KV_OPEN),
- list(KV_OPEN)));
- free(back_bottom_mesh);
- free(back_bottom_mesh_m);
-
- back_bottom = list(
- back_bottom_half,
- back_bottom_half_m)
- * head_scale_factor;
-
- free(back_bottom_half);
- free(back_bottom_half_m);
-
- ######################################
- ### the top of the back
- back_top_mesh = list(
- list(
- ctlpt(e3, 0, 9, -1.5),
- ctlpt(e3, 0, 10.3, -1.6),
- ctlpt(e3, 0, 11.6, -1.8),
- ctlpt(e3, 0, 12.7, -1.7),
- ctlpt(e3, 0, 13.7, -1.5),
- ctlpt(e3, 0, 14.7, -1.2),
- ctlpt(e3, 0, 16, -0)
- ),list(
- ctlpt(e3, 0.18, 9, -1.5),
- ctlpt(e3, 0.1, 10.2, -1.6),
- ctlpt(e3, 0.1, 11.6, -1.8),
- ctlpt(e3, 0.1, 12.7, -1.7),
- ctlpt(e3, 0.1, 13.7, -1.5),
- ctlpt(e3, 0.1, 14.7, -1.2),
- ctlpt(e3, 0.0, 16, -0)
- ),list(
- ctlpt(e3, 0.9, 9, -1.4),
- ctlpt(e3, 0.2, 10.2, -1.6),
- ctlpt(e3, 0.2, 11.6, -1.8),
- ctlpt(e3, 0.2, 12.7, -1.7),
- ctlpt(e3, 0.2, 13.7, -1.5),
- ctlpt(e3, 0.2, 14.7, -1.2),
- ctlpt(e3, 0.0, 16, -0)
- ),list(
- ctlpt(e3, 1.3, 9, -1.35),
- ctlpt(e3, 0.3, 10.2, -1.5),
- ctlpt(e3, 0.3, 11.6, -1.55),
- ctlpt(e3, 0.3, 12.7, -1.7),
- ctlpt(e3, 0.3, 13.7, -1.5),
- ctlpt(e3, 0.3, 14.7, -1.2),
- ctlpt(e3, 0.0, 16, -0)
- ),list(
- ctlpt(e3, 1.4, 9, -1.0),
- ctlpt(e3, 0.4, 10.2, -1.5),
- ctlpt(e3, 0.4, 11.6, -1.6),
- ctlpt(e3, 0.4, 12.7, -1.7),
- ctlpt(e3, 0.4, 13.7, -1.5),
- ctlpt(e3, 0.4, 14.7, -1.2),
- ctlpt(e3, 0.0, 16, -0)
- ),list(
- ctlpt(e3, 1.5, 9, -0.5),
- ctlpt(e3, 0.8, 10.2, -1.2),
- ctlpt(e3, 0.9, 11.4, -1.4),
- ctlpt(e3, 0.9, 12.6, -1.4),
- ctlpt(e3, 0.7, 14, -1.3),
- ctlpt(e3, 0.5, 15, -1.1),
- ctlpt(e3, 0, 16, -0)
- ),list(
- ctlpt(e3, 1.6, 9, -0.2),
- ctlpt(e3, 1.8, 10.2, -0.6),
- ctlpt(e3, 2.2, 11.5, -0.7),
- ctlpt(e3, 2.0, 12.6, -0.75),
- ctlpt(e3, 1.5, 14.3, -0.7),
- ctlpt(e3, 0.8, 15.4, -0.5),
- ctlpt(e3, 0, 16, -0)
- ),list(
- ctlpt(e3, 1.5, 9, -0),
- ctlpt(e3, 2.1, 10.1, -0),
- ctlpt(e3, 2.6, 11.3, -0),
- ctlpt(e3, 2.4, 12.8, -0),
- ctlpt(e3, 1.6, 14.5, -0),
- ctlpt(e3, 0.8, 15.6, -0),
- ctlpt(e3, 0, 16, -0)
- )
- );
-
- back_top_mesh_m = list(
- list(
- ctlpt(e3, -1.5, 9, -0),
- ctlpt(e3, -2.1, 10.1, -0),
- ctlpt(e3, -2.6, 11.3, -0),
- ctlpt(e3, -2.4, 12.8, -0),
- ctlpt(e3, -1.6, 14.5, -0),
- ctlpt(e3, -0.8, 15.6, -0),
- ctlpt(e3, -0, 16, -0)
- ),list(
- ctlpt(e3, -1.6, 9, -0.2),
- ctlpt(e3, -1.8, 10.2, -0.6),
- ctlpt(e3, -2.2, 11.5, -0.7),
- ctlpt(e3, -2.0, 12.6, -0.75),
- ctlpt(e3, -1.5, 14.3, -0.7),
- ctlpt(e3, -0.8, 15.4, -0.5),
- ctlpt(e3, -0, 16, -0)
- ),list(
- ctlpt(e3, -1.5, 9, -0.5),
- ctlpt(e3, -0.8, 10.2, -1.2),
- ctlpt(e3, -0.9, 11.4, -1.4),
- ctlpt(e3, -0.9, 12.6, -1.4),
- ctlpt(e3, -0.7, 14, -1.3),
- ctlpt(e3, -0.5, 15, -1.1),
- ctlpt(e3, -0, 16, -0)
- ),list(
- ctlpt(e3, -1.4, 9, -1.0),
- ctlpt(e3, -0.4, 10.2, -1.5),
- ctlpt(e3, -0.4, 11.6, -1.6),
- ctlpt(e3, -0.4, 12.7, -1.7),
- ctlpt(e3, -0.4, 13.7, -1.5),
- ctlpt(e3, -0.4, 14.7, -1.2),
- ctlpt(e3, -0.0, 16, -0)
- ),list(
- ctlpt(e3, -1.3, 9, -1.35),
- ctlpt(e3, -0.3, 10.2, -1.5),
- ctlpt(e3, -0.3, 11.6, -1.55),
- ctlpt(e3, -0.3, 12.7, -1.7),
- ctlpt(e3, -0.3, 13.7, -1.5),
- ctlpt(e3, -0.3, 14.7, -1.2),
- ctlpt(e3, -0.0, 16, -0)
- ),list(
- ctlpt(e3, -0.9, 9, -1.4),
- ctlpt(e3, -0.2, 10.2, -1.6),
- ctlpt(e3, -0.2, 11.6, -1.8),
- ctlpt(e3, -0.2, 12.7, -1.7),
- ctlpt(e3, -0.2, 13.7, -1.5),
- ctlpt(e3, -0.2, 14.7, -1.2),
- ctlpt(e3, -0.0, 16, -0)
- ),list(
- ctlpt(e3, -0.18, 9, -1.5),
- ctlpt(e3, -0.1, 10.2, -1.6),
- ctlpt(e3, -0.1, 11.6, -1.8),
- ctlpt(e3, -0.1, 12.7, -1.7),
- ctlpt(e3, -0.1, 13.7, -1.5),
- ctlpt(e3, -0.1, 14.7, -1.2),
- ctlpt(e3, -0.0, 16, -0)
- ),list(
- ctlpt(e3, -0, 9, -1.5),
- ctlpt(e3, -0, 10.3, -1.6),
- ctlpt(e3, -0, 11.6, -1.8),
- ctlpt(e3, -0, 12.7, -1.7),
- ctlpt(e3, -0, 13.7, -1.5),
- ctlpt(e3, -0, 14.7, -1.2),
- ctlpt(e3, -0, 16, -0)
- )
- );
-
- back_top_half = sbspline(3, 3, back_top_mesh,
- list(list(KV_OPEN), list(KV_OPEN)));
-
- back_top_half_m = sbspline(3, 3, back_top_mesh_m,
- list(list(KV_OPEN), list(KV_OPEN)));
-
- free(back_top_mesh);
- free(back_top_mesh_m);
-
- attrib(back_top_half, "rgb", "122,0,0");
- attrib(back_top_half_m, "rgb", "122,0,0");
-
- back_top = list(
- back_top_half * scale(vector(-1,1,1)),
- back_top_half_m * scale(vector(-1,1,1)))
- * head_scale_factor;
- back = list(back_top, back_bottom)
- * trans( vector(0,-9,0)*head_scale_factor ) * scale(vector(1,1.3,1))
- * trans( vector(0,9,0)*head_scale_factor )
- * scale(vector(-1,1,1)) * trans(vector(0,0,-1) * head_scale_factor);
-
- free(back_top);
- free(back_bottom);
-
- ###############################################################################
- ###############################################################################
- ### eyes
-
- eye1 = sphere(vector(0.45,0.15,-0.6),0.1);
- eye2 = sphere(vector(0.35,-0.05,-0.4),0.065);
- eye3 = sphere(vector(0.25,-0.08,-0.55),0.04);
- eye4 = sphere(vector(0.1,-0.1,-0.52),0.04);
-
- eye1_m = sphere(vector(-0.45,0.15,-0.6),0.1);
- eye2_m = sphere(vector(-0.35,-0.05,-0.4),0.065);
- eye3_m = sphere(vector(-0.25,-0.08,-0.55),0.04);
- eye4_m = sphere(vector(-0.1,-0.1,-0.52),0.04);
-
- attrib(eye1, "rgb", "0,0,0");
- attrib(eye2, "rgb", "0,0,0");
- attrib(eye3, "rgb", "0,0,0");
- attrib(eye4, "rgb", "0,0,0");
-
- attrib(eye1_m, "rgb", "0,0,0");
- attrib(eye2_m, "rgb", "0,0,0");
- attrib(eye3_m, "rgb", "0,0,0");
- attrib(eye4_m, "rgb", "0,0,0");
-
- ######################################
- ### all the legs
- leg_offset_scale_factor = head_scale_factor * scale(vector(0.95,0.95,-0.5));
-
- leg0_offset = vector(2.3,1.4,1) * leg_offset_scale_factor;
- leg1_offset = vector(2.9,2,1) * leg_offset_scale_factor;
- leg2_offset = vector(3.0,5,1) * leg_offset_scale_factor;
- leg3_offset = vector(2.4,7,1) * leg_offset_scale_factor;
- leg4_offset = vector(1.9,8.2,1) * leg_offset_scale_factor;
-
- leg0_offset_m = vector(-2.3,1.4,1) * leg_offset_scale_factor;
- leg1_offset_m = vector(-2.9,2,1) * leg_offset_scale_factor;
- leg2_offset_m = vector(-3.0,5,1) * leg_offset_scale_factor;
- leg3_offset_m = vector(-2.4,7,1) * leg_offset_scale_factor;
- leg4_offset_m = vector(-1.9,8.2,1) * leg_offset_scale_factor;
-
- jaw_offset = vector(0.26,-0.05,-0.3);
- jaw_trans = scale(vector(0.6,0.6,0.6)) * trans(jaw_offset);
- jaw_offset_m = vector(-0.26,-0.05,-0.3);
- jaw_trans_m = scale(vector(0.6,0.6,0.6)) * trans(jaw_offset_m);
-
- legs = list(
- leg0 * trans(leg0_offset),
- leg0_m * trans(leg0_offset_m),
- leg1 * trans(leg1_offset),
- leg1_m * trans(leg1_offset_m),
- leg2 * trans(leg2_offset),
- leg2_m * trans(leg2_offset_m),
- leg3 * trans(leg3_offset),
- leg3_m * trans(leg3_offset_m),
- leg4 * trans(leg4_offset),
- leg4_m * trans(leg4_offset_m)
- );
- attrib(legs, "reflect", 0.2);
-
- eyes = list(
- eye1,
- eye1_m,
- eye2,
- eye2_m,
- eye3,
- eye3_m,
- eye4,
- eye4_m
- );
- attrib(eyes, "reflect", 0.8);
-
- jaws = list(
- jaw * jaw_trans,
- jaw_m * jaw_trans_m
- );
-
- attrib(head, "texture", "image texture1.ppm");
- spider = list(
- head,
- back,
-
- legs,
- jaws,
- eyes
- );
- #view(spider, true);
- #attrib(spider, "resolution", 3);
-
-
- #############################################################
- #############################################################
- ### net
-
- step = 30;
- rotstepz = rotz(step);
-
- net_seg = poly(list(vector(0,0.,0), vector(0,4.,0)), true);
-
- net = net_seg;
-
- attrib(net_seg, "rgb", "192,192,192");
-
- for(
- 0, 30 , 360,
- net_seg = net_seg * rotstepz :
- net = net + net_seg
- );
-
- attrib(net, "rgb", "192,192,192");
-
- #rotstepz = scale(vector(1,1,1));
- scalestep = scale(vector(1.01,1.01,1.01));
- scalevect = vector(1.01,1.01,1.01);
- currvec = vector(0,0.1,0);
-
- for(
- 0, 30, 360 * 15,
- next_vec = currvec * rotstepz * scale(scalevect) :
- net_seg = poly(list(currvec, next_vec), true) *
- rotstepz :
- currvec = next_vec :
- scalevect = scalevect + vector(0.0001,0.0001,0.0001):
- net = net + net_seg
- );
-
- ##################################################################
- ### The corner the spider sits in
-
- box_p1 = poly(list(
- vector(0,0,0),
- vector(6,0,0),
- vector(6,6,0),
- vector(0,6,0)
- ),false);
- box_p2 = poly(list(
- vector(0,0,0),
- vector(0,6,0),
- vector(0,6,6),
- vector(0,0,6)
- ),false);
- box_p3 = poly(list(
- vector(0,0,0),
- vector(6,0,0),
- vector(6,0,6),
- vector(0,0,6)
- ),false);
-
- corner = box_p1 + box_p2 + box_p3;
- #attrib(corner, "texture", "wood");
- attrib(corner, "rgb", "200,100,100");
-
- #web = net * roty(45) * rotvec(vector(1,0,-1),-45) * trans(vector(3.1,3.1,3.1));
- #web = net * roty(45) * trans(vector(3,3,3));
-
- web_trans = roty(45) * rotvec(vector(1,0,-1),135) * trans(vector(3.1,3.1,3.1));
- spider_on_web = list(
- spider * scale(vector(0.6,0.6,0.6)) * trans(vector(0,0,-0.08)),
- net);
-
- attrib(corner, "texture", "wood,1");
- scene = list(corner, spider_on_web * web_trans);
- #view(scene, true);
-
- #save("scene.dat", scene);
-
- #save("spider.dat", spider);
-